package com.jeequan.jeepay.core.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jeequan.jeepay.core.model.BaseModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;

@ApiModel(value = "系统用户表", description = "")
@TableName("pay_member")
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class PayMemberDO extends BaseModel {

    //gw
    public static final LambdaQueryWrapper<PayMemberDO> gw(){
        return new LambdaQueryWrapper<>();
    }

    /**
     *主键
     */
    @ApiModelProperty(value = "主键")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     *用户组
     */
    @ApiModelProperty(value = "用户组")
    private Integer roleId;

    /**
     *代理ID
     */
    @ApiModelProperty(value = "代理ID")
    private Integer parentId;

    /**
     *代理级别
     */
    @ApiModelProperty(value = "代理级别")
    private Integer agentLevel;

    /**
     *所属系统： MGR-运营平台, MCH-商户中心
     */
    @ApiModelProperty(value = "所属系统： MGR-运营平台, MCH-商户中心")
    private String systemType;

    /**
     *用户名
     */
    @ApiModelProperty(value = "用户名")
    private String userName;

    /**
     *密码随机字符
     */
    @ApiModelProperty(value = "密码随机字符")
    private String salt;

    /**
     *密码
     */
    @ApiModelProperty(value = "密码")
    private String password;

    /**
     *支付密码
     */
    @ApiModelProperty(value = "支付密码")
    private String payPassword;

    /**
     *APIKEY
     */
    @ApiModelProperty(value = "APIKEY")
    private String apiKey;

    /**
     *是否开启谷歌身份验证登录
     */
    @ApiModelProperty(value = "是否开启谷歌身份验证登录")
    private Integer googleAuth;

    /**
     *谷歌密钥
     */
    @ApiModelProperty(value = "谷歌密钥")
    private String googleSecretKey;

    /**
     *是否开启充值功能
     */
    @ApiModelProperty(value = "是否开启充值功能")
    private Integer openCharge;

    /**
     *是否开启代付API
     */
    @ApiModelProperty(value = "是否开启代付API")
    private Integer dfApi;

    /**
     *代付API自动审核
     */
    @ApiModelProperty(value = "代付API自动审核")
    private Integer dfAutoCheck;

    /** 代付域名报备 */
    @ApiModelProperty(value = "代付域名报备",name = "代付域名报备",notes = "")
    private String dfDomain ;

    /** 代付域名报备IP */
    @ApiModelProperty(value = "代付域名报备IP",name = "代付域名报备IP",notes = "")
    private String dfIp ;

    /**
     *代付API扣除手续费方式，0：从到账金额里扣，1：从商户余额里扣
     */
    @ApiModelProperty(value = "代付API扣除手续费方式，0：从到账金额里扣，1：从商户余额里扣")
    private Integer dfChargeType;

    /**
     * 用户层级关系
     */
    @ApiModelProperty(value = "用户层级关系")
    private String pathId;

    /**
     *状态：0-未认证 1-已认证 2-待审核
     */
    @ApiModelProperty(value = "状态：0-未认证 1-已认证 2-待审核")
    private Integer authorized;

    /**
     *备注
     */
    @ApiModelProperty(value = "备注")
    private String remark;

    /**
     *状态：0-失效 1-有效
     */
    @ApiModelProperty(value = "状态：0-失效 1-有效")
    private Integer state;

    /** 创建时间 */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    @ApiModelProperty(value = "创建时间",name = "创建时间",notes = "")
    private Date createTime ;
    /** 更新时间 */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    @ApiModelProperty(value = "更新时间",name = "更新时间",notes = "")
    private Date updateTime ;

    /**
     *session随机字符串
     */
    @ApiModelProperty(value = "session随机字符串")
    private String sessionRandom;

    /**
     *最后登录时间
     */
    @ApiModelProperty(value = "最后登录时间")
    private Date lastLoginTime;

    /**
     *是否可以上号
     */
    @ApiModelProperty(value = "是否可以上号")
    private Integer canCreateAccount;

    /**
     *锁定余额:场景 1-t1到账金额
     */
    @ApiModelProperty(value = "锁定余额:场景 1-t1到账金额")
    private BigDecimal lockedMoney;

    /**
     *真实姓名
     */
    @ApiModelProperty(value = "真实姓名")
    private String realName;

    /**
     *手机号
     */
    @ApiModelProperty(value = "手机号")
    private String mobile;

    /**
     *是否超管（超管拥有全部权限） 0-否 1-是
     */
    @ApiModelProperty(value = "是否超管（超管拥有全部权限） 0-否 1-是")
    private Integer adminFlag;

    /**
     *单位时间已交易次数
     */
    @ApiModelProperty(value = "单位时间已交易次数")
    private Short unitPayingNumber;

    /**
     *单位时间已交易金额
     */
    @ApiModelProperty(value = "单位时间已交易金额")
    private BigDecimal unitPayingAmount;

    /**
     *单位时间已交易的第一笔时间
     */
    @ApiModelProperty(value = "单位时间已交易的第一笔时间")
    private Integer unitFristPayingTime;

    /**
     *当天最后一笔已交易时间
     */
    @ApiModelProperty(value = "当天最后一笔已交易时间")
    private Integer lastPayingTime;

    /**
     *当天已交易金额
     */
    @ApiModelProperty(value = "当天已交易金额")
    private BigDecimal payingMoney;

    /**
     *登录IP
     */
    @ApiModelProperty(value = "登录IP")
    private String loginIp;

    /**
     *最后登录错误时间
     */
    @ApiModelProperty(value = "最后登录错误时间")
    private Integer lastErrorTime;

    /**
     *错误登录次数
     */
    @ApiModelProperty(value = "错误登录次数")
    private Integer loginErrorNum;

    private static final long serialVersionUID = 1L;
}